package com.saver.core.persistence;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;

import com.saver.core.domain.Categoria;

public class CategoriaSQLite extends DatabaseHelper {
	
	private static final String TAG = "CategoriaSQLite";

	private static final int VERSION = 1;
	private static final String NAME = "saverDB" ;
	private static final CursorFactory FACTORY = null;
	
	private static final String[] COLUMNAS = new String []{"ID_CATEGORIA", "NOMBRE", "ICONO", "COLOR"};

	public CategoriaSQLite(Context context) {
		super(context, NAME, FACTORY, VERSION);
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
	}
	
	public void guardar (Categoria categoria) {
		SQLiteDatabase db = getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put("ID_CATEGORIA", categoria.getId());
		values.put("NOMBRE", categoria.getNombre());
		values.put("ICONO", categoria.getIcono());
        values.put("COLOR", categoria.getColor());
		db.insert("CATEGORIAS", null, values);
		db.close();
	}
	
	public void actualizar (Categoria categoria) {
		Log.d(TAG, "actualizar categoria");
		
		SQLiteDatabase db = getWritableDatabase();
		
		ContentValues values = new ContentValues();
		values.put("NOMBRE", categoria.getNombre());
		db.update("CATEGORIAS", values, "ID_CATEGORIA=?", 
				new String[]{categoria.getId().toString()});
		
		db.close();
		Log.d(TAG, "categoria actuaizada");
	}
	
	public Categoria buscarPorId (Integer id) {
		Categoria categoria = null;
		Log.i(TAG, "id: " + id);
		if (id != null) {
			SQLiteDatabase db = getReadableDatabase();
			Cursor cursor = db.query("CATEGORIAS", COLUMNAS, "ID_CATEGORIA=?", 
					new String[]{id.toString()}, null, null, null);
			
			if (cursor.moveToNext()) {
				categoria = crearCategoria(cursor);
			}
			db.close();
			
		}
		return categoria;
		
	}
	
	public List<Categoria> buscarTodo () {
		SQLiteDatabase db = getReadableDatabase();
		Cursor cursor = db.query("CATEGORIAS", COLUMNAS, null, null, null, null, "NOMBRE");
		ArrayList<Categoria> categorias = new ArrayList<Categoria>();
		while (cursor.moveToNext()) {
			Categoria categoria = crearCategoria(cursor);
			categorias.add(categoria);
		}
		db.close();
		return categorias;
	}

	private Categoria crearCategoria(Cursor cursor) {
		Categoria categoria = new Categoria();
		categoria.setId(cursor.getInt(0));
        categoria.setNombre(cursor.getString(1));
        categoria.setIcono(cursor.getString(2));
        categoria.setColor(cursor.getString(3));
		return categoria;
	}

}
